package com.wty.basic.collection;

import org.junit.Test;

import java.util.*;

/**
 * @Author wangtengyu
 * @Create 2018-08-08-13:24
 */
public class SetDemo {


    //无序性及唯一性判断 HashSet
    @Test
    public void hashSetDemo(){
        Set<Integer> set=new HashSet<>();
        set.add(1);
        set.add(3);
        set.add(4);
        set.add(2);
        set.add(5);
        set.add(4);
        System.out.println(set);
        for (int x:set){
            System.out.println(x);
        }
    }

    //LinkedHashSet 有序及唯一性判断       LInkedHashSet是有序的
    @Test
    public void linkedHashSetDemo(){
        Set<Integer> set=new LinkedHashSet<>();
        set.add(1);
        set.add(3);
        set.add(4);
        set.add(2);
        set.add(5);
        set.add(4);
        System.out.println(set);
        for (int x:set){
            System.out.println(x);
        }
    }


    //TreeSet 案例1 基本类型包装类的自然排序Integer
    @Test
    public void TreeSetDemo1(){
        TreeSet<Integer> set=new TreeSet();
        set.add(1);
        set.add(3);
        set.add(4);
        set.add(2);
        set.add(5);
        set.add(4);
        for(int x:set){
            System.out.println(x);
        }
    }
    //TreeSet 案例2 String的排序
    @Test
    public void TreeSetDemo2(){
        TreeSet<String> set=new TreeSet();
        set.add("hello");
        set.add("wty");
        set.add("love");
        set.add("kids");
        set.add("zzzz");
        set.add("heihei");
        for(String x:set){
            System.out.println(x);
        }
    }

    //TreeSet 案例3 自定义类实现Comparable接口
    @Test
    public void  TreeSetDemo3(){
        Student s1=new Student("wty",1000,22);
        Student s2=new Student("wty",1000,21);
        Student s3=new Student("lyc",3000,22);
        Student s4=new Student("zz",2500,22);


        TreeSet<Student> set=new TreeSet<>();
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);

        for (Student s:set){
            System.out.println(s.toString());
        }
    }



    //TreeSet 案例3 Comparator接口实现排序
    @Test
    public void  TreeSetDemo4(){
        Student2 s1=new Student2("wty",1000,22);
        Student2 s2=new Student2("wty",1000,21);
        Student2 s3=new Student2("lyc",3000,22);
        Student2 s4=new Student2("zz",2500,22);


        TreeSet<Student2> set=new TreeSet<>(new Comparator<Student2>() {
            @Override
            public int compare(Student2 stu1, Student2 stu2) {
                if(stu1.getScore()>stu2.getScore()){
                    return 1;
                }else if(stu1.getScore()<stu2.getScore()){
                    return -1;
                }else{
                    if(stu1.getAge()>stu2.getAge()){
                        return 1;
                    }else if(stu1.getAge()<stu2.getAge()){
                        return -1;
                    }else{
                        return 0;
                    }
                }
            }
        });
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);

        for (Student2 s:set){
            System.out.println(s.toString());
        }
    }

}
